Çàêðûòü îêíî
Ñïèñîê äðóãèõ äîêóìåíòîâ ÏÝÂÌ "Àãàò"
3.5.5. Còeêè. Ïpeäcòaâëeíèe äaííûx â còeêe.
B oáëacòè còeêoâ íaxoäÿòcÿ 2 còeêa co âcòpe÷íûì çaïoëíeíèeì. Ïepâûé, ãëaâíûé, pacòeò â còopoíó óâeëè÷eíèÿ aäpecoâ.
Ha ýòaïe cèíòaêcè÷ecêoão paçáopa oí cëóæèò äëÿ opãaíèçaöèè peêópcèè CÈHTAHa, â òo âpeìÿ êaê âòopoé (âcïoìoãaòeëüíûé) còeê ècïoëüçóeòcÿ CEMÏaìè äëÿ ïepeâoäa âûpaæeíèé â oápaòíóþ ïoëücêóþ çaïècü è xpaíeíèÿ ïpoìeæóòo÷íoé èíôopìaöèè (aäpecoâ, cìeùeíèé è äp.), oòíocÿùeécÿ ê, âoçìoæío, âëoæeííûì ïpeäïècaíèÿì. Bo âpeìÿ ècïoëíeíèÿ â ãëaâíoì còeêe íaxoäÿòcÿ ïpaâèëüío oôopìëeííûe ccûëêè ía oáúeêòû cècòeìû â âèäe ýëeìeíòoâ ãëaâíoão còeêa. C íèì paáoòaþò êoìaíäû paáoòû co còeêoì P-ìaøèíû. ×epeç íeão ocóùecòâëÿeòcÿ è âûçoâ ïpoöeäóp. Bo âòopoì còeêe xpaíÿòcÿ çaïècè ocòaíoâa è ocòaíoâa ïo oøèáêe, a òaêæe paáo÷aÿ èíôopìaöèÿ öèêëa ÄËß-ÈÇ. Ïpoãpaììû oápaáoòêè âëoæeííûx còpóêòóp ècïoëüçóþò eão äëÿ opãaíèçaöèè peêópcèè.
Ïpè âoçíèêíoâeíèè cèíòaêcè÷ecêoé oøèáêè oáa còeêa cápacûâaþòcÿ äo çaïoìíeííûx â SAVEAREA ïoçèöèé, a ïpè âoçíèêíoâeíèè oøèáêè âpeìeíè èíòepïpeòaöèè ãëaâíûé còeê paçáèpaeòcÿ (ò.e. c íeão cíèìaþòcÿ ýëeìeíòû è ïpè íeoáxoäèìocòè óíè÷òoæaþòcÿ) äo êoíöa èëè äo ïepâoé çaïècè aêòèâaöèè.
Paáoòa co còeêaìè ocóùecòâëÿeòcÿ ÷epeç ïoäïpoãpaììû óïpaâëeíèÿ ïpoãpaììíûìè còeêaìè (ÏÓÏC), cì. 8.1.3. Oíè oáecïe÷èâaþò còaíäapòíûé íaáop äeécòâèé - çaïècü/c÷èòûâaíèe oäíoão áaéòa.
Hèæe ïpèâeäeío ïpeäcòaâëeíèe oáúeêòoâ â ãëaâíoì còeêe âo âpeìÿ èíòepïpeòaöèè. Bepxíèé áaéò còeêa - ýòo \TÃC\ (òeã ãëaâíoão còeêa), oïpeäeëÿþùèé òèï ýëeìeíòa, ïocëeäóþùèe áaéòû - èíôopìaöèÿ oá ýòoì ýëeìeíòe.
\Ècòèía:\
1. TÃC = 0 .
\Ëoæü:\
1. TÃC = 1 .
\Èìÿ:\
%LEFT 5
1. TÃC = 2 ,
2. Hoìep èìeíè,
3. Còapoe çía÷eíèe çaùèòû.
Koãäa èìÿ ïoìeùaeòcÿ â còeê, ía íeão ócòaíaâëèâaeòcÿ aácoëþòíaÿ çaùèòa; ïpè ýòoì eão còapaÿ çaùèòa ïèøeòcÿ â còeê è âoccòaíaâëèâaeòcÿ òoëüêo ïpè cíÿòèè èìeíè co còeêa (íaïpèìep, ïocëe ècïoëüçoâaíèÿ eão çía÷eíèÿ). Ýòo íóæío äëÿ çaùèòû oò ïoáo÷íûx ýôôeêòoâ. Cëoæíocòè âoçíèêaþò ïpè èçìeíeíèè ïopÿäêa ýëeìeíòoâ â còeêe áeç èx paçûìeíoâaíèÿ, ò.e. â öèêëe ÄËß-OT (öèêëè÷ecêèé cäâèã âíèç 3-x ýëeìeíòoâ â còeêe) è ïpè âûçoâe ïpoöeäóp (ïapaìeòpû ïepeïècûâaþòcÿ âo âòopoé còeê).
%LEFT -5
\Ccûëêa ía oáúeêò\:
%LEFT 5
%LISTL
-oáúeêò, êoòopûé íeëüçÿ èçìeíÿòü (íaïpèìep, êoícòaíòa):
1. TÃC = 3 , 2. Aäpec oáúeêòa (2 áaéòa).
-âpeìeííoe çía÷eíèe (ïocëe ècïoëüçoâaíèÿ óíè÷òoæèòü):
1. TÃC = 4 , 2. Aäpec oáúeêòa \â ïóëe\ (2 áaéòa).
%ENDL
%LEFT -5
\Bûpeçêa èç òeêcòa/êopòeæa:\
%LEFT 5
Bûpeçêa âeäeòcÿ:
%LISTM
-äëÿ òeêcòa - íaä ïocëeäoâaòeëüíûìè áaéòaìè, â êoòopûx çaïècaíû âûpeçaeìûe cèìâoëû; -äëÿ còpóêòóp - íaä ïocëeäoâaòeëüíûìè ïapaìè áaéòoâ, â êoòopûx çaïècaíû aäpeca âûpeçaeìûx ýëeìeíòoâ.
%ENDL
Ïpeäcòaâëeíèe ía còeêe:
1. TÃC = 5 - âûpeçêa èç òeêcòa,
= 7 - âûpeçêa èç êopòeæa;
%LEFT 6
(â ïoäïpoãpaììax oápaáoòêè ècïoëüçóeòcÿ coâïaäeíèe TÃC c òeãaìè oáúeêòoâ).
%LEFT -6
2. Aäpec ía÷aëa âûpeçaeìoão èíòepâaëa (2 áaéòa),
3. Ïoëíaÿ äëèía âûpeçaeìoão èíòepâaëa \â áaéòax\ (2 áaéòa);
Äëÿ âûpeçêè A[i:j]:
- èç òeêcòa - (j-i+1)
- èç êopòeæa - (j-i+1)*2
4. Hoìep èìeíè, èç çía÷eíèÿ êoòopoão âeäeòcÿ âûpeçêa.
%LEFT 6
Ecëè âûpeçêa äeëaeòcÿ èç çía÷eíèÿ èìeíè èëè äpóãoé âûpeçêè, òo â còeêe ôopìèpóeòcÿ íoâûé ýëeìeíò "âûpeçêa". Ïpè íeoáxoäèìocòè ècïoëüçoâaòü \çía÷eíèe\ âûpeçêè oía paçûìeíoâûâaeòcÿ, ò.e. coçäaeòcÿ òpeáóeìûé oáúeêò, ccûëêa ía êoòopûé ïoìeùaeòcÿ â còeê c TÃC=4 (êaê âpeìeííoe çía÷eíèe). Ïpè íeoáxoäèìocòè ïpècâoèòü ÷eão-ëèáo âûpeçêe paçûìeíoâaíèÿ íe ïpoècxoäèò.
%LEFT -6
5. Còapoe çía÷eíèe çaùèòû (oïècaíèe cì. â ïóíêòe "èìÿ").
Ïpèìe÷aíèÿ.
%LISTL
-Äëÿ òeêcòoâ âìecòo âûáopêè A[i] ôopìèpóeòcÿ âûpeçêa A[i:i].
-Äëÿ êopòeæeé âûáopêa A[i] oôopìëÿeòcÿ êaê âûpeçêa, ío äëèía ócòaíaâëèâaeòcÿ >=¤8000 (çaâeäoìo íe äocòèæèìaÿ äëèía âûpeçêè).
-Äocòóï ê ïoëþ çaïècè peaëèçóeòcÿ êaê âûáopêa èç êopòeæa (TÃC=7), ãäe â êa÷ecòâe èíäeêca âûcòóïaeò peaëüíûé íoìep èìeíè â cïècêe ïoëeé çaïècè; çäecü ècïoëüçóeòcÿ òoò ôaêò, ÷òo cïècoê ýëeìeíòoâ â çaïècè xpaíèòcÿ òaê æe, êaê â êopòeæe.
-Aíaëoãè÷ío peaëèçóeòcÿ âûáop o÷epeäíoão ýëeìeíòa ìíoæecòâa â öèêëe ÄËß-ÈÇ: âíóòpeííèe ïpeäcòaâëeíèÿ ìíoæecòâ è êopòeæeé coâïaäaþò.
%ENDL
%LEFT -5
\Çaïècü aêòèâaöèè ïpoöeäópû/ôóíêöèè:\
%LEFT 5
%LISTD
-TÃC = 6 .
-Còapøèé áèò = 0 - ïpoöeäópa âûçâaía èç PAÏÈPÛ,
= 1 - ïpoöeäópa âûçâaía èç POÁÈKA.
Ocòaëüíûe 7 áèòoâ - çía÷eíèe ISCALL â ìoìeíò âûçoâa.
-ISNAMEOLD â ìoìeíò âûçoâa.
-Ecëè â ìoìeíò âûçoâa ISNAMEOLD /= 0 (èìÿ), òo äaëee - PROCOLD è PROTOLD.
-BEGIN (2 áaéòa) â ìoìeíò âûçoâa (áaçoâûé aäpec äëÿ êoìaíä ïepeäa÷ óïpaâëeíèÿ; èëè ía÷aëo áóôepa êoìaíä, èëè ía÷aëo ïpoöeäópû).
-Ecëè â ìoìeíò âûçoâa ISNAMEOLD /= 1 (âûçoâ), òo äaëee - BEGIN+2, BEGIN+3 - ía÷aëo áóôepa êoícòaíò.
-SAVEAREA, SAVEAREA+1 - óêaçaòeëü ía çaïoìíeííóþ ïoçèöèþ ãëaâíoão còeêa â ìoìeíò âûçoâa.
-NTK â ìoìeíò âûçoâa - aäpec âoçâpaòa.
%ENDL
Äaëee - ëoêaëüíûe èìeía (ïo 3 áaéòa ía èìÿ):
- áaéò êoíòpoëÿ, - 2 áaéòa - aäpec çía÷eíèÿ â ìoìeíò âûçoâa.
Ëoêaëüíûe èìeía çaïècûâaþòcÿ â còeê â ïopÿäêe èx ïepe÷ècëeíèÿ â êoícòpóêöèè "ÈMEHA:".
Äaëee - ôopìaëüíûe ïapaìeòpû; aíaëoãè÷íû ëoêaëüíûì èìeíaì.
Äaëee - èìeía è âûpeçêè, cooòâeòcòâóþùèe âoçâpaòíûì è âûxoäíûì ïapaìeòpaì; çaïècûâaþòcÿ â còeê â ïopÿäêe ïepe÷ècëeíèÿ.
%LEFT -5
Bo âòopoì còeêe âo âpeìÿ ècïoëíeíèÿ ìoãóò íaxoäèòücÿ çaïècè ocòaíoâa èëè ocòaíoâa ïo oøèáêe. Hèæe ïpèâeäeía còpóêòópa çaïèceé ocòaíoâa è ocòaíoâa ïo oøèáêe:
%LISTD
-0 ;
-MAINREG, ò.e. ïpèçíaê âûápaííoão ïoëüçoâaòeëeì ÿçûêa; -REGIM, ò.e. ÿçûê, ía êoòopoì íaïècaía ïpèocòaíoâëeííaÿ ïpoöeäópa; -BEGIN..BEGIN+3, ò.e. aäpeca ía÷aëa ïpoöeäópû è ee áóôepa êoícòaíò.
%ENDL
Äaëee äëÿ peæèìa ocòaíoâa cëeäóþò:
%LISTM
-Coäepæèìoe ÿ÷eeê CLASS, C.PROC, C.ISAME, C.ISCALL, cooòâeòcòâeíío, â ìoìeíò ïpèocòaíoâa;
-8 áaéòoâ: NTK, CURRENT2, C.BEGIN, C.ISCALL â ìoìeíò ïpèocòaíoâa.
%ENDL